public class Test {
    //语法错误都是在编译时确定的。
    //所有的强转都是不安全的，都可能会丢失数据。
    public static void main(String[] args) {
        //把字符串变成整数
        String str = "1234";
        //第1种
        int a = Integer.parseInt(str);
        System.out.println(a+1);
        //第2种
        a = Integer.valueOf(str);
        System.out.println(a+1);
    }
    public static void main16(String[] args) {
        //把整数变成字符串的两种方法
        int a = 10;
        //第1种
        String str = a +"";
        //System.out.println(str);
        //第2种(借助方法)
        String ret = String.valueOf(10);
        System.out.println(ret);
    }
    public static void main15(String[] args) {
        String s = "hello";
        System.out.println(s);
        int a = 10;
        int b = 20;
        System.out.println(a+b);
        System.out.println("a: "+a +" b:"+b);
        System.out.println("a: "+a + b);//a: 1020
        System.out.println(a + b + "gaoobo");

        String s1 = "hello";
        String s2 = " world";

        System.out.println(s1+s2);// s1+s2表示：将s1和s2进行拼接

    }
    public static void main13(String[] args) {
        /*int a = 10;
        long b = 20;
        //int c = (int)(a+b);
        long c = a+b;*/

        byte a = 127;
        byte b = 127;
        //当你参与运算的数据  小于4个字节的很好 会进行提升
        //会把小于4个字节的都提升为4个字节
        //byte c = (byte)(a+b);
        int c = a+b;
    }
    public static void main12(String[] args) {
        /*boolean flg = true;
        int a = 1;
        flg = (boolean) a; 错误的
*/
        int a = 97;
        char ch = (char)a;

        double d = 97.9;
        char ch2 = (char) d;

        System.out.println(ch);
        System.out.println(ch2);

    }
    public static void main11(String[] args) {
        int a = 10;//4
        long b = 100L;//8
        //a = b; 错误
        //a = (int)b;  // 不能进行直接赋值  强制类型转换  --》程序员自己确定一下是否把b的long类型变成int类型，确定之后就盖章。表示确定强制转换。
        b = a;//隐式类型转换

    }

    public static void main14(String[] args) {
        //C语言中0是假，非0即是真。
        //Java 中真就是true,假就是false.
        //Java中的boolean类型是不可以和int类型相互转换的。
        boolean b = false;
        System.out.println(b);
        //shift+f10 运行的快捷键
    }
    public static void main3(String[] args) {
        //字符型  2个字节,16个比特位。  没有负数   0~65535
        //C语言ASCII码字符集中 a:97   A:65
        //C语言使用的是ASCII码字符集，而Java使用的是Unicode字符集。
        //ASCII码字符集只能表示一些英文的相关字符
        //Unicode字符集不仅可以表示英文，还可以表示拉丁文等等。支持更多国家的语言。
        //Unicode字符集比ASCII码字符集更大一些。Unicode字符集是包含ASCII码字符集的。
        char ch = 'a';
        System.out.println(ch);
        char ch1 = '高';//一个汉字是2个字节
        System.out.println(ch1);
        System.out.println(Character.MAX_VALUE);//运行时IDEA无法正常的解析出来。
        System.out.println(Character.MIN_VALUE);
    }
    public static void main2(String[] args) {
        double a = 1.1;
        double b = 1.1;
        System.out.println(a / b);
        System.out.println(a*b);
        float num = 1.0f; // 写作 1.0F 也可以 System.out.println(num);
        /*
        float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准.
        由于表示的数据精度范围较小, 一般在工程上用到浮点数
        都优先考虑 double, 不太推荐使用 float. float的包装类型为Float。
         */
    }
    public static void main10(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a/b);//因为a和b都是int类型，除完本身应为0.5，但是由于都是int，所以只能保存0，后面的.5存不了。
        System.out.println(a*1.0/b);
        System.out.println((double)a/(double)b);
    }
    public static void main8(String[] args) {
        /**
         * 双精度浮点型：8个字节
         */
        double d = 12.5;
        System.out.println(d);
        System.out.println(Double.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);

        float f =  12.5f;
        System.out.println(f);

      /* System.out.println(Integer.MAX_VALUE+1);
        System.out.println(2147483647+1);*/
    }
    public static void main7(String[] args) {
        /**
         * 字节类型 -》 1个字节 -》8 -》 -2^7   -  (2^7)-1
         *  -128 - 127
         *  -128 .....-1,  0,1...... - 127   256个数字
         */
        byte b = 10;
        System.out.println(b);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }
    public static void main6(String[] args) {
        /**
         * 短整型 2个字节   =》 16  -》 15  -2^15 -  (2^15)-1
         *
         */
        short sh = 10;
        System.out.println(sh);

        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }
    public static void main5(String[] args) {
        /**
         * 8个字节 -》 64比特位 -》63bit  -> -2^63   （2^63）-1
         */
        long a = 10;
        System.out.println(a);
        System.out.println(Long.MAX_VALUE);//long类型能保存的最大值
        System.out.println(Long.MIN_VALUE);
        long b = 10L;//后面的L代表这个10是长整型的10，不加就代表是int的10.
        System.out.println(b);
    }
    public static void main4(String[] args) {
        int a = 10;//局部变量(定义在方法内部的)
        //Integer -> 把他当做 "一个int 的plus版本"  专业术语：包装类【后面会讲到】
        System.out.println(Integer.MAX_VALUE);//Integer.MAX_VALUE 这样可以输出int的最大值
        System.out.println(Integer.MIN_VALUE);//会输出 int的最小值

        int c = 2147483647;
        System.out.println(c);
    }
    public static void main1(String[] args) {
        System.out.println("hello");//println为输出"hello"后换行
        System.out.println(10);
        System.out.println(10.5);
        System.out.printf("%s\n","gaobo");
        System.out.printf("%d\n",10);
        System.out.print(10);//print是不换行，println是换行
        System.out.print("hanghuangmei");
    }
}
